package Model.Evenement;

import Model.Dessin;
import Model.Motif;

/**
 * Cette class permet de définir un évènement de type suppression, c'est à dire l'action de suppression d'un motif par l'utilisateur.
 * 
 * @author Kilian Cousein et Benjamin Tardieu
 */
public class SuppressionEvenement extends Evenement
{
//======================================================================//
//========================== Constructeurs =============================//
//======================================================================//
	
	/**
	 * Crée une nouvelle instance de <i>SuppressionEvenement</i> qui sera un clone de <i>evenement</i>. 
	 * 
	 * @param evenement L'évènement
	 */
	public SuppressionEvenement(Evenement evenement)
	{
		super(evenement);
	}
	
	
	/**
	 * Crée une nouvelle instance de <i>SuppressionEvenement</i> qui sera associée au <i>dessin</i>, qui aura comme motif avant l'execution <i>motiInitial</i>.
	 * 
	 * @param dessin Dessin auquel le motif est relié
	 * @param motifInitial Motif avant l'execution de l'évènement.
	 */
	public SuppressionEvenement(Dessin dessin, Motif motifInitial)
	{
		super(dessin);
		this.motifInitial = motifInitial.clone();

		if(this.motifInitial != null)
			this.motifInitial.setSelectionne(false);
	}
	

//======================================================================//
//======================== Méthodes abstraites =========================//
//======================================================================//	
	
	@Override
	public void annuler()
	{		
		dessin.ajouterMotif(this.motifInitial.clone());
	}
	

	@Override
	public void retablir()
	{
		dessin.supprimerMotif(this.motifInitial.clone());
	}


	@Override
	public Evenement clone()
	{
		return new SuppressionEvenement(this);
	}
}
